'use strict'

// var a = (x, y, ...rest) => {
//     var i, sum = x + y;
//     for (i = 0; i < rest.length; i++) {
//         sum += rest[i];
//     }
//     return sum;
// }

// console.log(a());

var obj = {
    birth: 1990,
    getAge: () => {
        var b = this.birth; // 1990
        var fn = () =>
            new Date().getFullYear() - b; // this指向window或undefined
        return fn();

    }
};

// var obj = {
//     birth: 1990,
//     getAge: function () {
//         var b = this.birth;
//         var fn = () =>
//             new Date().getFullYear() - b;
//         return fn();

//     }
// }

console.log(obj.getAge());

//函数声明
function foo() {
};
foo.name;//结果是foo
foo;//结果返回整个foo的函数体


//函数表达式
var foo1 = function () { } //默认的是foo1.name就是foo1

var foo2 = function bbb() { }
//foo2.name就是bbb,但是这种函数表达式的函数定义的name属性值不能在外部直接使用。
//bbb  
//返回的bbb is not defined

var foo3 = function bbb() {
    console.log(bbb);   //这里能使用函数的name属性值     
}

console.log(foo3());//输出bbb的函数体